PollCheckKnativeStatusFunc check if observedGeneration is less-than instead of not-equal #14087
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When updating a cloud-run service, the
PollCheckKnativeStatusFunc
checks whether thestatus.observedGeneration
field matches themetadata.generation
field to assert that an update operation has finished. The value ofmetadata.generation
is read once (from the response to thePUT
operation that updates the service) and not refreshed.However if a new revision is created during the polling-period then the
PollCheckKnativeStatusFunc
may never see thegeneration
value that it is looking for.We have observed this when cloud-run services are managed by terraform but also deployed "out-of-band" by other CI pipelines (e.g. deploying a new container from Github Actions).
observedGeneration
is1
,generation
is2
(expected generation is2
)observedGeneration
andgeneration
are now2
generation
is now3
butobservedGeneration
is2
observedGeneration
andgeneration
are now3
observedGeneration
and sees that3 != 2
(expected generation) so continues polling until the timeout.Since the
generation
value is a number that increases predictably, it should be safe to use a less-than comparison, so that we can end the poll once the expected generation has passed.If this PR is for Terraform, I acknowledge that I have:
make test
andmake lint
in the generated providers to ensure it passes unit and linter tests.Release Note Template for Downstream PRs (will be copied)
Derived from GoogleCloudPlatform/magic-modules#7520